﻿using System;
using System.Collections.Generic;

using System.Text;

namespace DoxygenBrowserAddin.Utils
{
  public static class ExPath
  {
    public static string GetRelativePath(string absolutePath, string relativeTo)
    {
      string[] absoluteDirectories = absolutePath.Split('\\');
      string[] relativeDirectories = relativeTo.Split('\\');
      //Get the shortest of the two paths            
      int length = absoluteDirectories.Length < relativeDirectories.Length ? absoluteDirectories.Length : relativeDirectories.Length;
      //Use to determine where in the loop we exited            
      int lastCommonRoot = -1;
      int index;
      //Find common root            
      for (index = 0; index < length; index++)
        if (absoluteDirectories[index] == relativeDirectories[index])
          lastCommonRoot = index;
        else
          break;
      //If we didn't find a common prefix then throw            
      if (lastCommonRoot == -1)
        throw new ArgumentException("Paths do not have a common base");
      //Build up the relative path            
      StringBuilder relativePath = new StringBuilder();
      //Add on the ..            
      for (index = lastCommonRoot + 1; index < absoluteDirectories.Length; index++)
        if (absoluteDirectories[index].Length > 0)
          relativePath.Append("..\\");
      //Add on the folders            
      for (index = lastCommonRoot + 1; index < relativeDirectories.Length - 1; index++)
        relativePath.Append(relativeDirectories[index] + "\\");
      relativePath.Append(relativeDirectories[relativeDirectories.Length - 1]);
      return relativePath.ToString();
    }


  }
}
